package com.jie.controller;


import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jie.entity.Attr;
import com.jie.service.AttrService;
import com.jie.utility.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author jie
 * @since 2023-12-19
 */
@RestController
@RequestMapping("/rear-end/attr")
public class AttrController {
    @Autowired
    private AttrService attrService;

    /**
     * 添加分类参数
     * @param attr
     * @return
     */
    @PostMapping("/addAttr")
    public R<String> addAttr(@RequestBody Attr attr){
        boolean save = attrService.save(attr);
        if(save){
            if(attr.getAttrSel().equals("many")){
                return R.success("添加动态参数成功");
            }else {
                return R.success("添加静态属性成功");
            }
        }
        return R.error("添加分类参数失败");
    }

    /**
     * 查询分类参数
     * @param id
     * @param sel
     * @return
     */
    @GetMapping("/{id}/attributes")
    public R<List<Attr>> attributes(@PathVariable("id") String id,@RequestParam("sel") String sel){
        LambdaQueryWrapper<Attr> queryWrapper=new LambdaQueryWrapper<>();
        queryWrapper.eq(Attr::getAttrSel,sel);
        queryWrapper.eq(Attr::getCatId,id);
        List<Attr> attrs = attrService.list(queryWrapper);
        if(attrs==null){
            return R.error("没有数据");
        }
        return R.success(attrs);
    }

    /**
     * 修改分类参数和添加或者修改参数项
     * @param attr
     * @return
     */
    @PutMapping("/editAttr")
    public R<String> editAttr(@RequestBody Attr attr){

        boolean save = attrService.updateById(attr);
        if(save){
            if(attr.getAttrVals()!=null&&attr.getAttrSel().equals("many")){
                return R.success("修改参数项成功！");
            }else if(attr.getAttrVals()!=null&&attr.getAttrSel().equals("only")){
                return R.success("修改属性项成功！");
            }
            if(attr.getAttrSel().equals("many")){
                return R.success("修改动态参数成功");
            }else if(attr.getAttrSel().equals("only")){
                return R.success("修改静态属性成功");
            }
        }
        else if(attr.getAttrVals()!=null){
            return R.error("修改失败！");
        }
        return R.error("修改分类参数失败");
    }

    /**
     * 删除分类参数
     * @param attr
     * @return
     */
    @GetMapping("/delAttr")
    public R<String> delAttr(Attr attr){
        boolean b = attrService.removeById(attr);
        if(b){
            return R.success("删除成功");
        }
        return R.error("删除失败");
    }
}

